package cmd

import (
	v1 "go_muban/api/home/v1"
	apiTemplate "go_muban/api/template/v1"
	"go_muban/internal/controller/hello"
	"go_muban/internal/controller/home"
	"go_muban/internal/controller/template"

	"github.com/gogf/gf/v2/net/ghttp"
)

// RegisterRouters 注册路由
func RegisterRouters(s *ghttp.Server) {
	// 静态文件处理
	s.AddStaticPath("/public", "resource/public")

	// API 路由组
	s.Group("/api", func(group *ghttp.RouterGroup) {
		group.Middleware(ghttp.MiddlewareHandlerResponse)

		// API v1 版本路由
		group.Group("/v1", func(group *ghttp.RouterGroup) {
			// 注册 hello 接口
			group.Bind(
				hello.NewV1(),
			)

			// 注册 home 接口
			group.Group("/home", func(group *ghttp.RouterGroup) {
				// 获取首页数据
				group.Bind(
					&v1.IndexReq{},
				)

				// 获取特色模板
				group.Bind(
					&v1.FeaturedTemplatesReq{},
				)
			})

			// 注册 template 接口
			group.Group("/template", func(group *ghttp.RouterGroup) {
				// 获取模板列表
				group.Bind(
					&apiTemplate.ListReq{},
				)

				// 获取模板详情
				group.Bind(
					&apiTemplate.DetailReq{},
				)
			})
		})
	})

	// 首页路由
	s.BindHandler("/", home.NewController().Index)

	// 模板相关路由
	s.Group("/templates", func(group *ghttp.RouterGroup) {
		templateController := template.NewController()
		group.GET("/", templateController.List)
		group.GET("/:id", templateController.Detail)
	})
}
